import { defineStore } from 'pinia'
import { ref } from 'vue'
import { reqLogin } from '@/apis/login'
import { useCartStore } from './cart'
import { reqMergeCart } from '@/apis/shopCart'

export const useUserStore = defineStore(
	'user',
	() => {
		/* state */
		// 用户信息数据
		const userInfo = ref({})
		const cartStore = useCartStore()

		/* actions */
		// 获取用户信息
		async function getUserInfo(params) {
			const res = await reqLogin(params)
			if (res.code === '1') {
				userInfo.value = res.result
				// 合并本地购物车数据，告知后端
				const params = cartStore.cartList.map(({ skuId, selected, count }) => ({ skuId, selected, count }))
				await reqMergeCart(params)
				// 获取最新的购物车商品数据
				cartStore.getShopCartListData()

				return 'success'
			} else {
				return Promise.reject(res.message)
			}
		}

		// 清除用于信息
		function clearUserInfo() {
			userInfo.value = {}
			// 清除购物车商品
			cartStore.clearCartGoods()
		}

		return {
			userInfo,
			getUserInfo,
			clearUserInfo,
		}
	},
	// 对pinia中数据做持久化
	{
		persist: true,
	},
)
